<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="./../../resources/templates/baseTemplate.xhtml">

    <ui:define name="content">
        <p:fieldset legend="Gerenciar locais">
            <h:form id="frmLocais">
                <!-- Exibição de mensagens gerais -->
                <p:growl id="gMessages" sticky="false" globalOnly="true" />

                <!-- Exibição da lista de públicos -->
                <p:dataTable id="dtLocais" 
                             value="#{localBean.listaLocais}"
                             paginator="true" rows="5" 
                             rowsPerPageTemplate="5,10"
                             paginatorPosition="bottom"
                             paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             var="atual">

                    <f:facet name="header">
                        <p:commandButton id="cbViewNovo" 
                                         value="Novo" 
                                         styleClass="cbViewNovo" 
                                         oncomplete="dlgNovo.show();"
                                         update=":dlgNovoLocal"
                                         actionListener="#{localBean.novoLocal}">
                            <f:setPropertyActionListener value='#{"Novo local"}'
                                                         target="#{localBean.tituloDialogo}" />
                            <f:setPropertyActionListener value="#{true}" 
                                                         target="#{localBean.BNovo}"/>
                        </p:commandButton>
                    </f:facet>
                    <!-- Colunas de edição e exclusão -->
                    <p:column>
                        <f:facet name="header">
                            <h:outputLabel value="Editar"/>
                        </f:facet>
                        <p:commandButton id="cbViewEditar"  
                                         image="ui-icon-pencil" 
                                         title="Editar"
                                         update=":dlgNovoLocal"
                                         oncomplete="dlgNovo.show();">
                            <f:setPropertyActionListener value="#{atual}" 
                                                         target="#{localBean.localSelecionado}" />
                            <f:setPropertyActionListener value='#{"Editar local"}'
                                                         target="#{localBean.tituloDialogo}" />
                            <f:setPropertyActionListener value="#{false}" 
                                                         target="#{localBean.BNovo}"/>
                        </p:commandButton>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputLabel value="Excluir"/>
                        </f:facet>
                        <p:commandButton id="cbViewExcluir" 
                                         onclick="dlgExcluir.show();" 
                                         icon="ui-icon-close" 
                                         title="Excluir">
                            <f:setPropertyActionListener value="#{atual}"
                                                         target="#{localBean.localSelecionado}" />
                        </p:commandButton> 
                    </p:column>
                    <p:column styleClass="tableTitleWidth">
                        <f:facet name="header">
                            Local
                        </f:facet>
                        <p:panelGrid columns="1"
                                     styleClass="gridNoLine">
                            <h:outputLabel id="olViewNomeLocal" 
                                           value="#{atual.nmeLocal}"
                                           styleClass="t2 wrap"/>
                            <p:separator />
                            <h:outputLabel value="Tipo de local: "
                                           styleClass="t3"/>
                            <h:outputLabel id="olViewTipoLocal" 
                                           value="#{atual.tdTipoLocal.nmeTipoLocal}"/>
                            <h:outputLabel value="Quantidade de vagas: " 
                                           styleClass="t3"/>
                            <h:outputLabel id="olViewQteVagasLocal" 
                                           value="#{atual.qtdVagasLocal}"/>

                        </p:panelGrid>

                    </p:column>
                </p:dataTable>
            </h:form>
            <!-- Caixa de diálogo de inclusão -->
            <p:dialog id="dlgNovoLocal" 
                      widgetVar="dlgNovo" 
                      modal="true" 
                      header="#{localBean.tituloDialogo}"
                      resizable="false">
                <h:form id="frmNovo">
                    <p:panel id="pNovoLocal">
                        <p:messages id="mNovoMessages" redisplay="false" />
                        <p:panelGrid columns="2">
                            <p:outputLabel id="olNovoNomeLocal" 
                                           value="Nome:" 
                                           for="itNovoNomeLocal"/>
                            <p:inputText id="itNovoNomeLocal" 
                                         value="#{localBean.localSelecionado.nmeLocal}" 
                                         required="true"
                                         requiredMessage="Digite o nome do local."
                                         label="Nome:"/>

                            <p:outputLabel id="olNovoTipoLocal" 
                                           for="somNovoTipoLocal" 
                                           value="Tipo de local"/>
                            <p:selectOneMenu id="somNovoTipoLocal" 
                                             value="#{localBean.localSelecionado.tdTipoLocal}" 
                                             effect="fade"
                                             required="true" 
                                             requiredMessage="Selecione um tipo de local."
                                             label="Tipo de local:">
                                <f:converter converterId="tipoLocalConversor" />
                                <f:selectItem itemLabel="Selecione um item..." itemValue=""/>
                                <f:selectItems value="#{localBean.listaTiposLocais}" 
                                               var="atual" 
                                               itemLabel="#{atual.nmeTipoLocal}" 
                                               itemValue="#{atual}">
                                </f:selectItems>
                            </p:selectOneMenu>
                            <p:outputLabel id="olNovoQtdeVagasLocal" 
                                           value="Quantidade de vagas:" 
                                           for="itNovoQtdeVagasLocal" />
                            <p:spinner id="itNovoQtdeVagasLocal"
                                       value="#{localBean.localSelecionado.qtdVagasLocal}"
                                       required="true"
                                       requiredMessage="Digite a quantidade de vagas do local."
                                       label="Quantidade de vagas:"/>
                            <p:commandButton value="Cancelar" 
                                             immediate="true" 
                                             onclick="dlgNovo.hide()"/>
                            <p:commandButton id="cbNovoSalvar" value="Salvar" 
                                             actionListener="#{localBean.cadastrarAtualizarLocal}"
                                             oncomplete="handleSalvo(xhr, status, args);" 
                                             update=":frmLocais :frmNovo"
                                             process="@form"
                                             ajax="true"/>
                        </p:panelGrid>
                    </p:panel>
                </h:form>
            </p:dialog>
            <!-- Caixa de diálogo de exclusão -->
            <p:confirmDialog id="dialogoExcluir" message="Deseja realmente excluir?"
                             header="Excluir local" severity="alert" 
                             widgetVar="dlgExcluir">
                <h:form id="frmExcluir">
                    <p:commandButton id="cbExcluirCancelar" value="Cancelar" 
                                     onclick="dlgExcluir.hide()" 
                                     type="button" /> 
                    <p:commandButton id="cbExcluirContinuar" value="Continuar"
                                     update=":frmLocais" 
                                     oncomplete="dlgExcluir.hide()"
                                     actionListener="#{localBean.excluirLocal}"/>
                </h:form>
            </p:confirmDialog>
        </p:fieldset>
        <!-- Javascript responsável por fechar a caixa de diálogo ao cadastrar-->
        <script type="text/javascript">
            function handleSalvo(xhr, status, args){
                if(args.salvo || args.editado){
                    dlgNovo.hide();
                }
            }
        </script>
    </ui:define>

</ui:composition>
